//
// Created by xinhua on 2021/10/22.
//

#ifndef MRENDER_COLOR_H
#define MRENDER_COLOR_H

#include <cmath>
#include "Angle.h"
#include "../core/String.h"
#include "../core/MAssert.h"

/**
 * 颜色，跟向量一致，运算实现 +-标准化
 */
class Color {
public:
    float r, g, b, a;
public:
    Color();
    Color(float r, float g, float b, float a);
    Color(float v[4]);
    //复制
    Color(const Color &v);

    //重写操作符
    Color &operator= (const Color &v);
    bool operator== (const Color &v) const;
    bool operator!= (const Color &v) const;
    Color operator+ (const Color &v) const;
    Color operator- (const Color &v) const;
    Color operator* (float a) const;
    Color operator/ (float a) const;

    float operator* (const Color &v) const;

    float length();
    void normalize();

    String toString();

    /**
     * 相减
     */
    static Color subtractVectors(const Color& v1, const Color& v2);


    /**
     * 左乘
     * @param f 标量
     * @param v2 颜色
     * @return 结果
     */
    static Color multiply(float f, Color v2);
};


#endif //MRENDER_COLOR_H
